home *** CD-ROM | disk | FTP | other *** search
- #include "FabTaskManager.h"
- #include "FabWmemman.h"
-
- enum {
- fabQueueType = 25
- };
-
- //static NMUPP sNMUPP = nil;
- static QHdr sQueueHdr = { 0, nil, nil};
-
- static void myResponse(TMInfoPtr theTaskPtr);
-
- void myResponse(TMInfoPtr theTaskPtr)
- {
- void (*proc)(long);
- long param;
-
- #if GENERATING68K
- long oldA5;
-
- oldA5 = SetA5((long)theTaskPtr->savedA5);
- #endif
-
- (void) Dequeue((QElemPtr)theTaskPtr, &sQueueHdr);
- param = theTaskPtr->parameter;
- proc = theTaskPtr->tmProc;
- ffree(theTaskPtr);
- proc(param);
-
- #if GENERATING68K
- (void) SetA5(oldA5);
- #endif
- }
-
- void InitTaskManager(void)
- {
- //sNMUPP = NewNMProc(myResponse);
- }
-
- void PROCCALLEDATINTERRUPTTIME(TMInfoPtr theTaskPtr, long param)
- {
- #if GENERATING68K
- long oldA5;
- #endif
-
- theTaskPtr->parameter = param;
-
- #if GENERATING68K
- oldA5 = SetA5((long)theTaskPtr->savedA5);
- #endif
-
- (void) Enqueue((QElemPtr)theTaskPtr, &sQueueHdr);
-
- #if GENERATING68K
- (void) SetA5(oldA5);
- #endif
- }
-
- void InitTaskRecord(void (*theProc)(long), TMInfoPtr theTaskPtr)
- {
- theTaskPtr->qType = fabQueueType;
- theTaskPtr->tmProc = theProc;
- //theTaskPtr->respProc = myResponse;
-
- #if GENERATING68K
- theTaskPtr->savedA5 = LMGetCurrentA5();
- #endif
- }
-
- void CheckCallQueue(void)
- {
- TMInfoPtr head;
-
- while (head = (TMInfoPtr)sQueueHdr.qHead)
- myResponse(head);
- }
-